import request from '../utils/request';

/**
 * 上传文件
 * @param {File} file - 文件对象
 * @returns {Promise} - 上传请求的Promise对象
 */
export function uploadFile(file) {
  const formData = new FormData();
  formData.append('file', file);

  return request({
    url: '/api/file/upload',
    method: 'post',
    headers: {
      'Content-Type': 'multipart/form-data'
    },
    data: formData
  });
}

/**
 * 获取文件列表
 * @param {Object} params 查询参数
 * @returns {Promise} 文件列表
 */
export function getFileList(params) {
  return request({
    url: '/api/file/list',
    method: 'get',
    params
  });
}

/**
 * 下载文件
 * @param {String} fileId 文件ID
 * @returns {Promise} 文件数据
 */
export function downloadFile(fileId) {
  return request({
    url: `/api/file/download/${fileId}`,
    method: 'get',
    responseType: 'blob'
  });
}

/**
 * 删除文件
 * @param {String} fileId 文件ID
 * @returns {Promise} 删除结果
 */
export function deleteFile(fileId) {
  return request({
    url: `/api/file/${fileId}`,
    method: 'delete'
  });
}

/**
 * 获取文件信息
 * @param {String} fileId 文件ID
 * @returns {Promise} 文件信息
 */
export function getFileInfo(fileId) {
  return request({
    url: `/api/file/${fileId}`,
    method: 'get'
  });
}

/**
 * 上传头像
 * @param {File} file - 头像文件对象
 * @returns {Promise} - 上传请求的Promise对象
 */
export function uploadAvatar(file) {
  const formData = new FormData();
  formData.append('file', file);

  return request({
    url: '/api/file/avatar',
    method: 'post',
    headers: {
      'Content-Type': 'multipart/form-data'
    },
    data: formData
  });
}

/**
 * 上传作业附件
 * @param {File} file - 作业附件文件对象
 * @returns {Promise} - 上传请求的Promise对象
 */
export function uploadHomeworkFile(file) {
  const formData = new FormData();
  formData.append('file', file);

  return request({
    url: '/api/file/homework',
    method: 'post',
    headers: {
      'Content-Type': 'multipart/form-data'
    },
    data: formData
  });
}

// 上传作业提交附件
export function uploadSubmissionFile(file) {
  const formData = new FormData();
  formData.append('file', file);

  return request({
    url: '/api/file/submission',
    method: 'post',
    data: formData,
    headers: {
      'Content-Type': 'multipart/form-data'
    },
    timeout: 60000 // 增加超时时间到60秒
  });
}

/**
 * 上传聊天图片
 * @param {File} file - 图片文件对象
 * @returns {Promise} - 上传请求的Promise对象 
 */
export function uploadChatImage(file) {
  const formData = new FormData();
  formData.append('file', file);

  return request({
    url: '/api/file/chat',
    method: 'post',
    headers: {
      'Content-Type': 'multipart/form-data'
    },
    data: formData
  });
} 